Quality of Service (QoS) refers to a networking concept of managing limited bandwidth for a multiple customers which compete for that bandwidth. QoS attempts to measure transmission rates, error rates, and other transmission characteristics with the intent of guaranteeing or improving high priority network transmissions. Generally, multimedia transmissions will implement some form of QoS for consumers that are the recipients of that multimedia. One QoS technique is achieved by assigning priorities to each sender and allocating a percentage of bandwidth to each sender based on a particular sender's priority. However, priorities and conditions are dynamically changing within a network; correspondingly, priorities must be continually monitored and modified. Dynamic priority modifications can degrade network performance and effect network throughput.
QoS may be implemented at different architectural locations within network technologies, such as within routers, and the like. Other technologies provide QoS support within network firewalls, network servers, and other network hosts.
Conventionally, bandwidth is controlled through features included within network protocols. For example, with Transmission Control Protocol (TCP)/Internet Protocol (IP), communications are divided up into different levels of communication abstraction within a network stack. At the lowest level of abstraction, IP communications occur by routing network packets between nodes and by planning delivery routes across a network. The next level of the stack abstraction is a TCP layer, here information is broken into packets and sent to the IP layer or information is re-assembled from packets that are received from the IP layer. The TCP layer passes packets to or receives packets from the IP layer of the network stack. On top of TCP layer are communications generally used by higher-level applications, such as Hypertext Transmission Protocol (HTTP) used within browser applications.
One technique that TCP protocol uses for controlling the bandwidth of a particular sender is referred to as a “sliding window.” With a sliding window protocol, the sender is instructed to transmit no more than a defined number of bytes (the window). A receiver, in response to receiving the bytes responds with an acknowledgment (ACK) and indicates within the header of the ACK what additional number of bytes (sliding window) is acceptable for the sender to transmit to the receiver. Thus, the acknowledgments sent by the receiver define the sliding window or the number of additional bytes that the receiver can process. This sliding window is referred to as the “receiver window.” The TCP protocol also makes use of a second sliding window referred to as a “congestion window.” Unlike the receiver window, which is advertised to the TCP sender by the TCP receiver in ACK packets, the congestion window is maintained locally by the TCP sender based on its estimation of congestion in the network.
Some network devices, such as network firewalls, take advantage of the TCP receiver window to implement QoS. This technique can also be used directly by TCP receivers. This is the most prevalent technique for controlling transmission rates of senders with TCP/IP Internet communications. But, this technique requires dynamic monitoring and modification to the receiver window, which requires an active process to regularly monitor and modify TCP packets
Thus, improved techniques for shaping data transmission rates are needed, where modifications to the receiver can be used to control transmission rates of the sender without modifying the sender.